import { request } from '@/utils'

export const getChannels = () => {
  return async dispatch => {
    const res = await request.get('/channels')

    dispatch({
      type: 'article/getChannels',
      payload: res.data.data.channels
    })
  }
}

// 获取文章列表
export const getArticles = params => {
  return async dispatch => {
    // 组装准备查询接口的数据，目前选择驼峰命名，在action中进行和数据库字段的对接
    let queryParams = {}
    // 处理状态-不传为全部
    if (params.status !== -1) {
      queryParams.status = params.status
    }
    // 处理频道-不传为全部
    if (params.channelId !== -1) {
      queryParams.channel_id = params.channelId
    }
    // 日期范围-起始时间
    if (params.dateStart) {
      queryParams.begin_pubdate = params.dateStart
    }
    // 日期范围-截止时间
    if (params.dateEnd) {
      queryParams.end_pubdate = params.dateEnd
    }
    // 分页
    queryParams.page = params.page
    queryParams.per_page = params.pageSize

    // 发起请求
    const res = await request.get('/mp/articles', { params: queryParams })

    const { results: list, total_count: total } = res.data.data

    // 稍后dispatch
    dispatch({
      type: 'article/getArticles',
      payload: {
        list: list.map(item => {
          return {
            ...item,
            cover: item.cover.images[0] // cover就是一个字符串
          }
        }),
        total: total
      }
    })
  }
}
// 删除文章
export const deleteArticle = (id, params) => {
  return async dispatch => {
    // 删除文章
    await request.delete(`/mp/articles/${id}`)

    // 重新获取文章列表
    dispatch(getArticles(params))
  }
}

// 发表文章
export const publishArticle = data => {
  return async dispatch => {
    console.log('actonzhong', data)
    // 准备发表文章的数据
    const postData = {
      title: data.values.title,
      content: data.values.content,
      channel_id: data.values.channelId,
      cover: {
        type: data.values.type,
        images: data.fileList.map(item => item.response.data.url)
      }
    }
    // 发表文章
    console.log('格式化后的数据', postData)
    // 调用接口
    const res = await request.post('/mp/articles?draft=false', postData)
    console.log('发表文章结果', res)

    // 发送dispatch
  }
}
